|
@@ -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>
|