bill 1 anno fa
parent
commit
9ee9241cd2
8 ha cambiato i file con 1597 aggiunte e 85 eliminazioni
  1. 15 11
      index.html
  2. 2 0
      package.json
  3. 1524 41
      pnpm-lock.yaml
  4. 13 0
      src/sdk/types/sdk.ts
  5. 11 11
      src/sdk/types/store.ts
  6. 5 20
      src/store/sync.ts
  7. 20 1
      src/views/scene/container.vue
  8. 7 1
      vite.config.ts

+ 15 - 11
index.html

@@ -1,13 +1,17 @@
 <!DOCTYPE html>
 <html lang="en">
-  <head>
-    <meta charset="UTF-8" />
-<!--    <link rel="icon" type="image/svg+xml" href="/vite.svg" />-->
-    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <title>Vite + Vue + TS</title>
-  </head>
-  <body>
-    <div id="app"></div>
-    <script type="module" src="/src/main.ts"></script>
-  </body>
-</html>
+
+<head>
+  <meta charset="UTF-8" />
+  <!--    <link rel="icon" type="image/svg+xml" href="/vite.svg" />-->
+  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+  <title>Vite + Vue + TS</title>
+</head>
+
+<body>
+  <div id="app"></div>
+  <script type="module" src="/src/main.ts">
+  </script>
+</body>
+
+</html>

+ 2 - 0
package.json

@@ -12,6 +12,7 @@
   "dependencies": {
     "@lk77/vue3-color": "^3.0.6",
     "@types/express": "^4.17.17",
+    "@vitejs/plugin-legacy": "^4.1.1",
     "axios": "^1.3.5",
     "body-parser": "^1.20.2",
     "canvg": "^4.0.1",
@@ -38,6 +39,7 @@
     "@types/node": "^18.15.11",
     "@vitejs/plugin-vue": "^4.1.0",
     "express": "^4.18.2",
+    "terser": "^5.19.4",
     "typescript": "^4.9.3",
     "vite": "^4.2.0",
     "vue-tsc": "^1.2.0"

File diff suppressed because it is too large
+ 1524 - 41
pnpm-lock.yaml


+ 13 - 0
src/sdk/types/sdk.ts

@@ -228,6 +228,16 @@ export type SiteModeInfoAtom =
     });
 
 export type SiteModeInfo = SiteModeInfoAtom[];
+export type SceneCropSetting = {
+  top: { value: number; maxTop: number; minTop: number };
+  scale: { value: number };
+  rotate: { value: number };
+};
+export type SeSceneCropSetting = {
+  top?: { value: number };
+  scale?: { value: number };
+  rotate?: { value: number };
+};
 
 export type Scene = Base & {
   getDownloadInfo: () => any;
@@ -294,6 +304,9 @@ export type Scene = Base & {
   setPose: (pose: Pose) => void;
 
   getPose2: () => PoseVideoInfo;
+
+  getSceneCropSetting: () => SceneCropSetting;
+  setSceneCropSetting: (setting: SeSceneCropSetting) => void;
 };
 
 export type PoseVideo = {

+ 11 - 11
src/sdk/types/store.ts

@@ -1,13 +1,13 @@
-import { MeasuresRaw, MeasureUnit } from '@/sdk'
+import { MeasuresRaw, MeasureUnit } from "@/sdk";
 
 export type Store = {
-    measure?: {
-        tempMeasures: MeasuresRaw
-        list: MeasuresRaw
-        unit: MeasureUnit
-    },
-    baseLine?: {
-        baseLines: MeasuresRaw
-        unit: MeasureUnit
-    }
-}
+  measure?: {
+    tempMeasures: MeasuresRaw;
+    list: MeasuresRaw;
+    unit: MeasureUnit;
+  };
+  baseLine?: {
+    baseLines: MeasuresRaw;
+    unit: MeasureUnit;
+  };
+};

+ 5 - 20
src/store/sync.ts

@@ -121,19 +121,14 @@ export const api = !global.android
           global.getSceneStoreCallback = (data) => {
             resolve(data);
           };
-          global.android.getSceneStore(
-            params.m + "/store.json",
-            "getSceneStoreCallback"
-          );
+          global.android.getSceneStore(params.m + "/store.json", "getSceneStoreCallback");
         });
       },
       // genUseLoading()
       async getFile(fileUrl: string) {
         fileUrl = fileUrl.trim();
         if (fileUrl.includes(params.m)) {
-          fileUrl = fileUrl.substring(
-            fileUrl.indexOf(params.m) + params.m.length
-          );
+          fileUrl = fileUrl.substring(fileUrl.indexOf(params.m) + params.m.length);
         }
         fileUrl = new URL(fileUrl, "http://www.a.com").pathname;
         fileUrl = (params.realPath || params.m) + fileUrl;
@@ -151,10 +146,7 @@ export const api = !global.android
           return await new Promise<string>((resolve) => {
             const apiName = `getImageCallback${count++}`;
             global[apiName] = (base64) => {
-              console.error(
-                "请求url:" + fileUrl,
-                "返回:" + base64.substring(0, 60)
-              );
+              console.error("请求url:" + fileUrl, "返回:" + base64.substring(0, 60));
               resolve(URL.createObjectURL(base64ToBlob(base64)));
               delete global[apiName];
             };
@@ -236,11 +228,7 @@ const loadStore = async () => {
   list.value = data?.measures || [];
   baseLines.value = data?.baseLines || [];
   basePoints.value = data?.basePoints || [];
-  sceneSeting.value = data?.sceneSeting || {
-    top: 4,
-    scale: 100,
-    rotate: 0,
-  };
+  sceneSeting.value = data?.sceneSeting;
   fixPoints.value = data?.fixPoints || [];
   photos.value = data?.photos || [];
   accidentPhotos.value = data?.accidentPhotos || [];
@@ -256,10 +244,7 @@ export const uploadImage = (blob: Blob, name = `${getId()}.jpg`) => {
   return api.uploadImage(file);
 };
 
-export const downloadImage = async (
-  data: Blob | string,
-  name = `${getId()}.jpg`
-) => {
+export const downloadImage = async (data: Blob | string, name = `${getId()}.jpg`) => {
   const blob: Blob =
     typeof data === "string"
       ? (await axios.get(data, { responseType: "blob" })).data

+ 20 - 1
src/views/scene/container.vue

@@ -11,8 +11,9 @@ import { customMap, disabledMap, setupLaser, useLoading, useParams } from "@/hoo
 import { store } from "@/store";
 import { currentApp } from "@/store/app";
 import { Loading } from "@kankan/components/index";
-import { LaserSDK, Mode } from "@/sdk";
+import { LaserSDK, Mode, SeSceneCropSetting } from "@/sdk";
 import { api } from "@/store/sync";
+import { sceneSeting } from "@/store/sceneSeting";
 
 const emit = defineEmits<{ (e: "loaded"): void }>();
 const sceneLayoutRef = ref<HTMLCanvasElement>();
@@ -50,6 +51,24 @@ onMounted(async () => {
       ? Math.round(1 / pos.meterPerPixel)
       : null;
   });
+
+  watchEffect(() => {
+    if (sceneSeting.value) {
+      const setting: SeSceneCropSetting = {};
+      sceneSeting.value.top && (setting.top = { value: sceneSeting.value.top });
+      sceneSeting.value.rotate && (setting.rotate = { value: sceneSeting.value.rotate });
+      sceneSeting.value.scale && (setting.scale = { value: sceneSeting.value.scale });
+      sdk.scene.setSceneCropSetting(setting);
+    } else {
+      const setting = sdk.scene.getSceneCropSetting();
+      sceneSeting.value = {
+        top: setting.top.value,
+        rotate: setting.rotate.value,
+        scale: setting.scale.value,
+      };
+    }
+  });
+
   // 156  170
   // 90
   setTimeout(() => {

+ 7 - 1
vite.config.ts

@@ -1,6 +1,7 @@
 import { defineConfig, loadEnv } from "vite";
 import vue from "@vitejs/plugin-vue";
 import path from "path";
+import legacy from "@vitejs/plugin-legacy";
 // @ts-ignore
 import { createServer as createMockServer } from "./server/mock";
 
@@ -49,7 +50,12 @@ export default async ({ mode }) => {
       },
       extensions: [".js", ".ts", ".json", ".vue"],
     },
-    plugins: [vue()],
+    plugins: [
+      vue(),
+      legacy({
+        targets: ["defaults", "not IE 11"],
+      }),
+    ],
     server,
   });
 };