浏览代码

添加新数据需求

bill 2 年之前
父节点
当前提交
b78b1716f4

文件差异内容过多而无法显示
+ 1 - 1
server/test/SS-t-P1d6CwREny2/attach/sceneStore


+ 1 - 1
src/graphic/History/History.js

@@ -17,7 +17,7 @@ import { crossPointService } from "../Service/CrossPointService";
 import { curveRoadPointService } from "../Service/CurveRoadPointService";
 import { curveRoadPointService } from "../Service/CurveRoadPointService";
 import { curveEdgeService } from "../Service/CurveEdgeService";
 import { curveEdgeService } from "../Service/CurveEdgeService";
 import { curveRoadService } from "../Service/CurveRoadService";
 import { curveRoadService } from "../Service/CurveRoadService";
-import { curvePointService } from "../Service/CurvePointService";
+// import { curvePointService } from "../Service/CurvePointService";
 
 
 export default class History {
 export default class History {
   constructor(layer) {
   constructor(layer) {

+ 4 - 0
src/graphic/Renderer/Draw.js

@@ -772,6 +772,10 @@ export default class Draw {
     );
     );
   }
   }
 
 
+  drawCurveLine() {
+
+  }
+
   drawLine(vector) {
   drawLine(vector) {
     const startReal = dataService.getPoint(vector.startId);
     const startReal = dataService.getPoint(vector.startId);
     const start = coordinate.getScreenXY(startReal);
     const start = coordinate.getScreenXY(startReal);

+ 1 - 1
src/graphic/Service/LineService.js

@@ -3,7 +3,7 @@ import Line from "../Geometry/Line.js";
 import CurvePoint from "../Geometry/CurvePoint.js";
 import CurvePoint from "../Geometry/CurvePoint.js";
 import CurveLine from "../Geometry/CurveLine.js";
 import CurveLine from "../Geometry/CurveLine.js";
 import { dataService } from "./DataService.js";
 import { dataService } from "./DataService.js";
-import { curvePointService } from "./CurvePointService.js";
+// import { curvePointService } from "./CurvePointService.js";
 import VectorCategory from "../enum/VectorCategory.js";
 import VectorCategory from "../enum/VectorCategory.js";
 import { mathUtil } from "../Util/MathUtil.js";
 import { mathUtil } from "../Util/MathUtil.js";
 import { uiService } from "./UIService.js";
 import { uiService } from "./UIService.js";

+ 4 - 1
src/hook/useLaser.ts

@@ -59,7 +59,10 @@ export const setupLaser = async (
   await loadSetupLaser();
   await loadSetupLaser();
   return new Promise<SDK>((resolve) => {
   return new Promise<SDK>((resolve) => {
     sdk = sdkFactory(props as any);
     sdk = sdkFactory(props as any);
-    sdk.scene.on("allLoaded", () => resolve(sdk));
+    sdk.scene.on("allLoaded", () => {
+      console.error("allloaded")
+      resolve(sdk)
+    });
   }).then((sdk) => {
   }).then((sdk) => {
     for (const fn of listenLoaded) {
     for (const fn of listenLoaded) {
       setTimeout(fn, 0, sdk);
       setTimeout(fn, 0, sdk);

+ 20 - 14
src/store/sync.ts

@@ -6,7 +6,7 @@ import {fixPoints} from "@/store/fixPoint";
 import {photos} from "@/store/photos";
 import {photos} from "@/store/photos";
 import {accidentPhotos} from "@/store/accidentPhotos";
 import {accidentPhotos} from "@/store/accidentPhotos";
 import {roadPhotos} from "@/store/roadPhotos";
 import {roadPhotos} from "@/store/roadPhotos";
-import {blobToBase64, debounce, getId} from "@/utils";
+import {base64ToBlob, blobToBase64, debounce, getId} from "@/utils";
 import {watch} from "vue";
 import {watch} from "vue";
 import {params} from "@/hook";
 import {params} from "@/hook";
 import router, {writeRouteName} from "@/router";
 import router, {writeRouteName} from "@/router";
@@ -40,17 +40,22 @@ export const api =
           return true;
           return true;
         },
         },
         async getFile(url) {
         async getFile(url) {
-          // console.error(url, baseURL)
-          //
-          // return url.includes(baseURL) ? url : (baseURL + url.trim());
-
           if (url.includes(baseURL)) {
           if (url.includes(baseURL)) {
             url = url.substring(baseURL.length);
             url = url.substring(baseURL.length);
           }
           }
           url = url.trim();
           url = url.trim();
-          const data = await axios.get(url, { responseType: "blob" });
-          const base64 = await blobToBase64(data.data);
-          return base64
+          const paths = url.split("/")
+          const notBase64BaseTypes = [
+            ".png", ".jpg", ".bin"
+          ]
+          const notBase64 = notBase64BaseTypes.some(type => paths[paths.length - 1].includes(type))
+          if (notBase64) {
+            return baseURL + url
+          } else {
+            const data = await axios.get(url, { responseType: "blob" });
+            const base64 = await blobToBase64(data.data);
+            return URL.createObjectURL(base64ToBlob(base64))
+          }
         },
         },
         async closePage() {
         async closePage() {
           return router.push({ name: writeRouteName.scene });
           return router.push({ name: writeRouteName.scene });
@@ -88,18 +93,19 @@ export const api =
           }
           }
           fileUrl = new URL(fileUrl, "http://www.a.com").pathname
           fileUrl = new URL(fileUrl, "http://www.a.com").pathname
           fileUrl = (params.realPath || params.m) + fileUrl
           fileUrl = (params.realPath || params.m) + fileUrl
-          console.error("处理后url:" + fileUrl)
 
 
           const paths = fileUrl.split("/")
           const paths = fileUrl.split("/")
-          const notBase64 = paths[paths.length - 1].includes(".png") ||
-            paths[paths.length - 1].includes(".jpg")
+          const notBase64BaseTypes = [
+            ".png", ".jpg", ".bin"
+          ]
+          const notBase64 = notBase64BaseTypes.some(type => paths[paths.length - 1].includes(type))
 
 
-          if (import.meta.env.DEV || !notBase64) {
+          if (!notBase64) {
             return await new Promise<string>((resolve) => {
             return await new Promise<string>((resolve) => {
               const apiName = `getImageCallback${count++}`
               const apiName = `getImageCallback${count++}`
               global[apiName] = (base64) => {
               global[apiName] = (base64) => {
                 console.error("请求url:" + fileUrl, "返回:" + base64.substring(0, 60))
                 console.error("请求url:" + fileUrl, "返回:" + base64.substring(0, 60))
-                resolve(base64);
+                resolve(URL.createObjectURL(base64ToBlob(base64)));
                 delete global[apiName]
                 delete global[apiName]
               };
               };
               global.android.getImage(fileUrl, apiName);
               global.android.getImage(fileUrl, apiName);
@@ -166,7 +172,7 @@ const loadStore = async () => {
   console.log("开始同步syncSceneStore")
   console.log("开始同步syncSceneStore")
 };
 };
 
 
-export const updateSceneStore = debounce(api.setStore, 1000);
+export const updateSceneStore = debounce(api.setStore, 300);
 export const uploadImage = (blob: Blob) => {
 export const uploadImage = (blob: Blob) => {
   const file = new File([blob], `${getId()}.jpg`);
   const file = new File([blob], `${getId()}.jpg`);
   return api.uploadImage(file);
   return api.uploadImage(file);

+ 8 - 10
src/views/graphic/container.vue

@@ -7,22 +7,20 @@
 </template>
 </template>
 
 
 <script setup lang="ts">
 <script setup lang="ts">
-import {computed, onMounted, ref} from "vue";
+import {computed, nextTick, onMounted, ref, watchEffect} from "vue";
 import {setCanvas} from "@/hook/useGraphic";
 import {setCanvas} from "@/hook/useGraphic";
-import {router} from '@/router'
-import {Mode} from "@/views/graphic/menus";
-import {accidentPhotos} from "@/store/accidentPhotos";
-import {roadPhotos} from "@/store/roadPhotos";
 import { useData } from './data'
 import { useData } from './data'
 
 
 const drawCanvasRef = ref<HTMLCanvasElement>();
 const drawCanvasRef = ref<HTMLCanvasElement>();
+const data = useData()
 
 
+const stop = watchEffect(() => {
+  if (drawCanvasRef.value && data.value) {
+    setCanvas(drawCanvasRef.value, data);
+    nextTick(stop)
+  }
+})
 
 
-
-onMounted(() => {
-  console.log(useData())
-  setCanvas(drawCanvasRef.value, useData());
-});
 </script>
 </script>
 
 
 <style scoped lang="scss">
 <style scoped lang="scss">

+ 6 - 2
src/views/graphic/data.ts

@@ -9,8 +9,12 @@ import {photos} from "@/store/photos";
 export const useData = () => {
 export const useData = () => {
   const data = ref<AccidentPhoto | RoadPhoto>(null);
   const data = ref<AccidentPhoto | RoadPhoto>(null);
   watch(
   watch(
-    () => router.currentRoute.value.params,
-    (params) => {
+    () => ({
+        params: router.currentRoute.value.params,
+        accidentPhotos: accidentPhotos.value,
+        roadPhotos: roadPhotos.value
+    }),
+    ({params}) => {
       if (!params.action) {
       if (!params.action) {
         data.value = null
         data.value = null
       } else if (params.action === 'add') {
       } else if (params.action === 'add') {

+ 3 - 2
src/views/graphic/header.vue

@@ -47,6 +47,7 @@ import {useData} from './data'
 import UiInput from "@/components/base/components/input/index.vue";
 import UiInput from "@/components/base/components/input/index.vue";
 import {roadPhotos} from "@/store/roadPhotos";
 import {roadPhotos} from "@/store/roadPhotos";
 import {back, uploadImage} from '@/store/sync'
 import {back, uploadImage} from '@/store/sync'
+import {genUseLoading, useLoading} from "@/hook";
 
 
 const data = useData()
 const data = useData()
 const mode = computed(() => Number(router.currentRoute.value.params.mode) as Mode)
 const mode = computed(() => Number(router.currentRoute.value.params.mode) as Mode)
@@ -104,7 +105,7 @@ const menus = computed<{disable?: boolean, text: string, onClick: () => void}[]>
   return menus
   return menus
 })
 })
 
 
-const saveStore = async () => {
+const saveStore = genUseLoading(async () => {
   const newData = {
   const newData = {
     ...data.value,
     ...data.value,
     data: JSON.parse(JSON.stringify(drawRef.value.load.save()))
     data: JSON.parse(JSON.stringify(drawRef.value.load.save()))
@@ -118,7 +119,7 @@ const saveStore = async () => {
   } else {
   } else {
     origin.push(newData)
     origin.push(newData)
   }
   }
-}
+})
 
 
 const saveHandler = async () => {
 const saveHandler = async () => {
   await saveStore()
   await saveStore()