Browse Source

修改道路交互

bill 2 năm trước cách đây
mục cha
commit
82ef5073d4

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 1 - 1
server/test/a0k4xu045_202305311600080410/attach/sceneStore


+ 2 - 1
src/store/photos.ts

@@ -4,6 +4,7 @@ import {Pos} from "@/sdk";
 export type PhotoRaw = {
   id: string
   url: string
+  urlRaw: string
   meterPerPixel: number
   time: number,
   measures: { pos: Pos[], dis: number}[],
@@ -12,4 +13,4 @@ export type PhotoRaw = {
   baseLines: Array<Pos[]>
 }
 
-export const photos = ref<PhotoRaw[]>([])
+export const photos = ref<PhotoRaw[]>([])

+ 2 - 1
src/views/photos/index.vue

@@ -9,6 +9,7 @@
     </template>
 
     <Photos
+      :getURL="data => data.urlRaw || data.url"
       v-model:active="active"
       v-model:selects="selects"
       :select-mode="selectMode"
@@ -156,4 +157,4 @@ onDeactivated(() => {
   bottom: var(--boundMargin);
 }
 
-</style>
+</style>

+ 2 - 2
src/views/scene/menus/actions.ts

@@ -12,14 +12,14 @@ import Message from "@/components/base/components/message/message.vue";
 import { getId } from '@/utils'
 
 const trackPosMenuAction = (onComplete: () => void, onAddStore: (pos: Pos3D) => void) => {
-  customMap.magnifier = true
+  // customMap.magnifier = true
 
   const onCleanup = getCoverPos(pos => {
     onComplete()
     onAddStore(pos)
   })
   return () => {
-    customMap.magnifier = false
+    // customMap.magnifier = false
     onCleanup()
   }
 }

+ 41 - 26
src/views/scene/photo.vue

@@ -30,7 +30,7 @@ import {base64ToBlob, getId} from "@/utils";
 import {nextTick, ref} from "vue";
 import {api, downloadImage, uploadImage} from "@/store/sync";
 import {router, writeRouteName} from "@/router";
-import {Pos, Pos3D} from "@/sdk";
+import {LaserSDK, Pos, Pos3D} from "@/sdk";
 
 const showCoverUrl = ref<string>()
 if (photos.value[photos.value.length - 1]?.url) {
@@ -45,37 +45,57 @@ const getCurrentScreen = (pos: Pos3D): Pos => {
   const data = sdk.scene.getScreenByPoint(pos)
   return data.trueSide ? data.pos : null
 }
+
+const screenshot = async (sdk: LaserSDK) => {
+  const dom = sdk.scene.el
+  dom.style.pointerEvents = "none"
+
+  const getScreenshot = async () => {
+    const data = sdk.scene.screenshot(
+      dom.offsetWidth,
+      dom.offsetHeight
+    )
+    const {dataUrl: base64} = await data.finishPromise
+    const url = await uploadImage(base64ToBlob(base64))
+    return {
+      url,
+      meterPerPixel: data.meterPerPixel
+    }
+  }
+  const screenshotRaw = await getScreenshot()
+
+  baseLines.value.concat(list.value).forEach(item => item.show = false)
+  await nextTick()
+  const screenshot = await getScreenshot()
+  baseLines.value.concat(list.value).forEach(item => item.show = true)
+  await nextTick()
+
+  dom.style.pointerEvents = "all"
+  return {
+    rawUrl: screenshotRaw.url,
+    url: screenshot.url,
+    meterPerPixel: screenshot.meterPerPixel
+  }
+}
+
 const getCurrentScreens = (poss: Array<Pos3D>): Array<Pos> =>
   poss.map(getCurrentScreen).filter(pos => !!pos);
 
 const photo = genUseLoading(async () => {
   const sdk = useSDK()
-  const dom = sdk.scene.el
-  dom.style.pointerEvents = "none"
-
-  const data = sdk.scene.screenshot(
-    dom.offsetWidth,
-    dom.offsetHeight
-  )
-  const {dataUrl: base64} = await data.finishPromise
-  const blob = base64ToBlob(base64)
-  tempPhoto.value = URL.createObjectURL(blob)
+  const data = await screenshot(sdk)
+  tempPhoto.value = await api.getFile(data.rawUrl)
+  await nextTick()
 
-  const upload = uploadImage(blob)
-  await nextTick();
   const handler = async () => {
     coverRef.value.removeEventListener("animationend", handler)
     showCoverUrl.value = tempPhoto.value
     tempPhoto.value = null
-    // baseLines.value.concat(list.value).forEach(item => {
-    //   item.show = false
-    // })
-    await nextTick()
-    // await downloadImage(blob)
-    const url = await upload
+
     photos.value.push({
       id: getId(),
-      url: url,
+      url: data.url,
+      urlRaw: data.rawUrl,
       time: new Date().getTime(),
       meterPerPixel: data.meterPerPixel,
       measures: list.value
@@ -96,11 +116,6 @@ const photo = genUseLoading(async () => {
         .filter(data => !!data.pos),
       basePoints: getCurrentScreens(basePoints.value.map(data => data.pos))
     })
-    showCoverUrl.value = await api.getFile(url)
-    dom.style.pointerEvents = "all"
-    // baseLines.value.concat(list.value).forEach(item => {
-    //   item.show = true
-    // })
   }
   coverRef.value.addEventListener("animationend", handler)
 })
@@ -187,4 +202,4 @@ const photo = genUseLoading(async () => {
   }
 
 }
-</style>
+</style>