|
@@ -1,176 +1,187 @@
|
|
|
-import axios from '@/dbo/main'
|
|
|
+import axios from "@/dbo/main";
|
|
|
import { list } from "@/store/measure";
|
|
|
-import {baseLines} from "@/store/baseLine";
|
|
|
-import {basePoints} from "@/store/basePoint";
|
|
|
-import {fixPoints} from "@/store/fixPoint";
|
|
|
-import {photos} from "@/store/photos";
|
|
|
-import {accidentPhotos} from "@/store/accidentPhotos";
|
|
|
-import {roadPhotos} from "@/store/roadPhotos";
|
|
|
-import {blobToBase64, debounce, getId} from '@/utils'
|
|
|
-import {watch} from "vue";
|
|
|
-import {params} from "@/hook";
|
|
|
-import router, {writeRouteName} from "@/router";
|
|
|
-import { baseURL } from '@/dbo/local'
|
|
|
+import { baseLines } from "@/store/baseLine";
|
|
|
+import { basePoints } from "@/store/basePoint";
|
|
|
+import { fixPoints } from "@/store/fixPoint";
|
|
|
+import { photos } from "@/store/photos";
|
|
|
+import { accidentPhotos } from "@/store/accidentPhotos";
|
|
|
+import { roadPhotos } from "@/store/roadPhotos";
|
|
|
+import { blobToBase64, debounce, getId } from "@/utils";
|
|
|
+import { watch } from "vue";
|
|
|
+import { params } from "@/hook";
|
|
|
+import router, { writeRouteName } from "@/router";
|
|
|
+import { baseURL } from "@/dbo/local";
|
|
|
|
|
|
-const global = window as any
|
|
|
+const global = window as any;
|
|
|
|
|
|
global.getImageCallback = () => {
|
|
|
- console.log("原始getImageCallback")
|
|
|
-
|
|
|
-}
|
|
|
+ console.log("原始getImageCallback");
|
|
|
+};
|
|
|
global.getSceneStoreCallback = () => {
|
|
|
- console.log("原始getSceneStoreCallback")
|
|
|
-}
|
|
|
+ console.log("原始getSceneStoreCallback");
|
|
|
+};
|
|
|
global.setSceneStoreCallback = () => {
|
|
|
- console.log("原始setSceneStoreCallback")
|
|
|
-}
|
|
|
+ console.log("原始setSceneStoreCallback");
|
|
|
+};
|
|
|
global.uploadImageCallback = () => {
|
|
|
- console.log("原始uploadImageCallback")
|
|
|
-}
|
|
|
+ console.log("原始uploadImageCallback");
|
|
|
+};
|
|
|
global.downloadImageCallback = () => {
|
|
|
- console.log("原始downloadImageCallback")
|
|
|
-}
|
|
|
+ console.log("原始downloadImageCallback");
|
|
|
+};
|
|
|
|
|
|
-export const api = import.meta.env.DEV && !global.android
|
|
|
-// const api = import.meta.env.DEV
|
|
|
- ? {
|
|
|
- async setStore(data) {
|
|
|
- return axios.post("sceneStore", data)
|
|
|
- },
|
|
|
- async getStore() {
|
|
|
- return (await axios.get("/attach/sceneStore")).data
|
|
|
- },
|
|
|
- async uploadImage(file) {
|
|
|
- return (await axios({
|
|
|
- url: "/upload",
|
|
|
- headers: { "Content-Type": "multipart/form-data" },
|
|
|
- method: 'post',
|
|
|
- data: { file }
|
|
|
- })).data.data as string
|
|
|
- },
|
|
|
- async downloadImage(file) {
|
|
|
- window.open(URL.createObjectURL(file))
|
|
|
- },
|
|
|
- async getFile(url) {
|
|
|
- if (url.includes(baseURL)) {
|
|
|
- url = url.substring(baseURL.length)
|
|
|
- }
|
|
|
- url = url.trim()
|
|
|
- const data = await axios.get(url,{responseType:'blob'})
|
|
|
- // console.error("getFile", url)
|
|
|
- const base64 = await blobToBase64(data.data)
|
|
|
- // console.error("getFile", url, base64)
|
|
|
- return base64
|
|
|
- },
|
|
|
- async closePage() {
|
|
|
- return router.push({ name: writeRouteName.scene })
|
|
|
- }
|
|
|
- }
|
|
|
- : {
|
|
|
- // async setStore(data) {
|
|
|
- // return axios.post("sceneStore", data)
|
|
|
- // },
|
|
|
- // async getStore() {
|
|
|
- // return (await axios.get("/attach/sceneStore")).data
|
|
|
- // },
|
|
|
- setStore(data) {
|
|
|
- return new Promise(resolve => {
|
|
|
- console.log("调用setSceneStore参数", JSON.stringify(data))
|
|
|
- global.android.setSceneStore(params.m + "/store.json", JSON.stringify(data))
|
|
|
- global.setSceneStoreCallback = data => {
|
|
|
- console.log("setSceneStoreCallback返回", data)
|
|
|
- resolve(data)
|
|
|
- }
|
|
|
- })
|
|
|
- },
|
|
|
- getStore() {
|
|
|
- return new Promise(resolve => {
|
|
|
- console.log("调用getSceneStore")
|
|
|
- global.getSceneStoreCallback = data => {
|
|
|
- console.log("getSceneStoreCallback返回", data)
|
|
|
- resolve(data ? JSON.parse(data) : data)
|
|
|
- }
|
|
|
- global.android.getSceneStore(params.m + "/store.json")
|
|
|
- })
|
|
|
- },
|
|
|
- getFile(fileUrl) {
|
|
|
- fileUrl = fileUrl.trim()
|
|
|
- if (import.meta.env.DEV) {
|
|
|
- return new Promise<string>(resolve => {
|
|
|
- global.getImageCallback = (base64) => {
|
|
|
- console.error("getImageCallback返回" + base64)
|
|
|
- console.error("getFile", fileUrl, base64)
|
|
|
- resolve(base64)
|
|
|
+export const api =
|
|
|
+ import.meta.env.DEV && !global.android
|
|
|
+ ? // const api = import.meta.env.DEV
|
|
|
+ {
|
|
|
+ async setStore(data) {
|
|
|
+ return axios.post("sceneStore", data);
|
|
|
+ },
|
|
|
+ async getStore() {
|
|
|
+ return (await axios.get("/attach/sceneStore")).data;
|
|
|
+ },
|
|
|
+ async uploadImage(file) {
|
|
|
+ return (
|
|
|
+ await axios({
|
|
|
+ url: "/upload",
|
|
|
+ headers: { "Content-Type": "multipart/form-data" },
|
|
|
+ method: "post",
|
|
|
+ data: { file },
|
|
|
+ })
|
|
|
+ ).data.data as string;
|
|
|
+ },
|
|
|
+ async downloadImage(file) {
|
|
|
+ window.open(URL.createObjectURL(file));
|
|
|
+ },
|
|
|
+ async getFile(url) {
|
|
|
+ if (url.includes(baseURL)) {
|
|
|
+ url = url.substring(baseURL.length);
|
|
|
}
|
|
|
- console.log("获取", params.m + fileUrl)
|
|
|
- global.android.getImage(params.m + fileUrl)
|
|
|
- console.log(global, global.getImageCallback)
|
|
|
- })
|
|
|
- } else {
|
|
|
- return Promise.resolve(fileUrl)
|
|
|
+ url = url.trim();
|
|
|
+ const data = await axios.get(url, { responseType: "blob" });
|
|
|
+ // console.error("getFile", url)
|
|
|
+ const base64 = await blobToBase64(data.data);
|
|
|
+ // console.error("getFile", url, base64)
|
|
|
+ return base64;
|
|
|
+ },
|
|
|
+ async closePage() {
|
|
|
+ return router.push({ name: writeRouteName.scene });
|
|
|
+ },
|
|
|
}
|
|
|
- },
|
|
|
- uploadImage(file: File) {
|
|
|
- return new Promise<string>(resolve => {
|
|
|
- global.uploadImageCallback = resolve
|
|
|
- console.log("上传图片", params.m + "/" + file.name, "参数", blobToBase64(file))
|
|
|
- global.android.uploadImage(params.m + "/" + file.name, blobToBase64(file))
|
|
|
- })
|
|
|
- },
|
|
|
- downloadImage(file: File) {
|
|
|
- return new Promise(resolve => {
|
|
|
- global.downloadImageCallback = resolve
|
|
|
- // file为base64
|
|
|
- console.log("下载图片", file.name, blobToBase64(file))
|
|
|
- global.android.downloadImage(file.name, blobToBase64(file))
|
|
|
- })
|
|
|
- },
|
|
|
- closePage() {
|
|
|
- return new Promise(resolve => {
|
|
|
- global.closeWebViewCallback = resolve
|
|
|
- global.android.closeWebView()
|
|
|
- })
|
|
|
- }
|
|
|
- }
|
|
|
+ : {
|
|
|
+ // async setStore(data) {
|
|
|
+ // return axios.post("sceneStore", data)
|
|
|
+ // },
|
|
|
+ // async getStore() {
|
|
|
+ // return (await axios.get("/attach/sceneStore")).data
|
|
|
+ // },
|
|
|
+ setStore(data) {
|
|
|
+ return new Promise((resolve) => {
|
|
|
+ console.log("调用setSceneStore参数", JSON.stringify(data));
|
|
|
+ global.android.setSceneStore(
|
|
|
+ params.m + "/store.json",
|
|
|
+ JSON.stringify(data)
|
|
|
+ );
|
|
|
+ global.setSceneStoreCallback = (data) => {
|
|
|
+ console.log("setSceneStoreCallback返回", data);
|
|
|
+ resolve(data);
|
|
|
+ };
|
|
|
+ });
|
|
|
+ },
|
|
|
+ getStore() {
|
|
|
+ return new Promise((resolve) => {
|
|
|
+ console.log("调用getSceneStore");
|
|
|
+ global.getSceneStoreCallback = (data) => {
|
|
|
+ console.log("getSceneStoreCallback返回", data);
|
|
|
+ resolve(data ? JSON.parse(data) : data);
|
|
|
+ };
|
|
|
+ global.android.getSceneStore(params.m + "/store.json");
|
|
|
+ });
|
|
|
+ },
|
|
|
+ getFile(fileUrl) {
|
|
|
+ fileUrl = fileUrl.trim();
|
|
|
+ if (import.meta.env.DEV) {
|
|
|
+ return new Promise<string>((resolve) => {
|
|
|
+ global.getImageCallback = (base64) => {
|
|
|
+ console.error("getImageCallback返回");
|
|
|
+ // console.error("getFile", fileUrl, base64)
|
|
|
+ resolve(base64);
|
|
|
+ };
|
|
|
+ console.log("获取", params.m + fileUrl);
|
|
|
+ global.android.getImage(params.m + fileUrl);
|
|
|
+ console.log(global, global.getImageCallback);
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+ return Promise.resolve(fileUrl);
|
|
|
+ }
|
|
|
+ },
|
|
|
+ uploadImage(file: File) {
|
|
|
+ return new Promise<string>(async (resolve) => {
|
|
|
+ global.uploadImageCallback = resolve;
|
|
|
+ const data = await blobToBase64(file);
|
|
|
+ console.log("上传图片", params.m + "/" + file.name, "参数:", data);
|
|
|
+ global.android.uploadImage(params.m + "/" + file.name, data);
|
|
|
+ });
|
|
|
+ },
|
|
|
+ downloadImage(file: File) {
|
|
|
+ return new Promise(async (resolve) => {
|
|
|
+ global.downloadImageCallback = resolve;
|
|
|
+ const data = await blobToBase64(file);
|
|
|
+ // file为base64
|
|
|
+ console.log("下载图片", file.name);
|
|
|
+ global.android.downloadImage(file.name, data);
|
|
|
+ });
|
|
|
+ },
|
|
|
+ closePage() {
|
|
|
+ return new Promise((resolve) => {
|
|
|
+ global.closeWebViewCallback = resolve;
|
|
|
+ global.android.closeWebView();
|
|
|
+ });
|
|
|
+ },
|
|
|
+ };
|
|
|
|
|
|
export const back = () => {
|
|
|
if (history.state.back) {
|
|
|
- router.back()
|
|
|
+ router.back();
|
|
|
} else {
|
|
|
- api.closePage()
|
|
|
+ api.closePage();
|
|
|
}
|
|
|
-}
|
|
|
+};
|
|
|
|
|
|
const loadStore = async () => {
|
|
|
- const data: any = await api.getStore()
|
|
|
- list.value = data?.measures || []
|
|
|
- baseLines.value = data?.baseLines || []
|
|
|
- basePoints.value = data?.basePoints || []
|
|
|
- fixPoints.value = data?.fixPoints || []
|
|
|
- photos.value = data?.photos || []
|
|
|
- accidentPhotos.value = data?.accidentPhotos || []
|
|
|
- roadPhotos.value = data?.roadPhotos || []
|
|
|
+ const data: any = await api.getStore();
|
|
|
+ list.value = data?.measures || [];
|
|
|
+ baseLines.value = data?.baseLines || [];
|
|
|
+ basePoints.value = data?.basePoints || [];
|
|
|
+ fixPoints.value = data?.fixPoints || [];
|
|
|
+ photos.value = data?.photos || [];
|
|
|
+ accidentPhotos.value = data?.accidentPhotos || [];
|
|
|
+ roadPhotos.value = data?.roadPhotos || [];
|
|
|
|
|
|
- syncSceneStore()
|
|
|
-}
|
|
|
+ syncSceneStore();
|
|
|
+};
|
|
|
|
|
|
-export const updateSceneStore = debounce(api.setStore, 1000)
|
|
|
+export const updateSceneStore = debounce(api.setStore, 1000);
|
|
|
export const uploadImage = (blob: Blob) => {
|
|
|
- const file = new File([blob], `${getId()}.jpg`)
|
|
|
- return api.uploadImage(file)
|
|
|
-}
|
|
|
+ const file = new File([blob], `${getId()}.jpg`);
|
|
|
+ return api.uploadImage(file);
|
|
|
+};
|
|
|
|
|
|
-export const downloadImage = async (data: Blob | string, name: string = getId()) => {
|
|
|
- const blob: Blob = typeof data === "string"
|
|
|
- ? (await axios.get(data, { responseType: "blob" })).data
|
|
|
- : data
|
|
|
- const file = new File([blob], name, {type: "image/jpeg"})
|
|
|
- await api.downloadImage(file)
|
|
|
-}
|
|
|
+export const downloadImage = async (
|
|
|
+ data: Blob | string,
|
|
|
+ name: string = getId()
|
|
|
+) => {
|
|
|
+ const blob: Blob =
|
|
|
+ typeof data === "string"
|
|
|
+ ? (await axios.get(data, { responseType: "blob" })).data
|
|
|
+ : data;
|
|
|
+ const file = new File([blob], name, { type: "image/jpeg" });
|
|
|
+ await api.downloadImage(file);
|
|
|
+};
|
|
|
|
|
|
const syncSceneStore = () => {
|
|
|
if (import.meta.env.DEV) {
|
|
|
- console.log("自动保存测试")
|
|
|
+ console.log("自动保存测试");
|
|
|
updateSceneStore({
|
|
|
measures: list.value,
|
|
|
baseLines: baseLines.value,
|
|
@@ -178,8 +189,8 @@ const syncSceneStore = () => {
|
|
|
fixPoints: fixPoints.value,
|
|
|
photos: photos.value,
|
|
|
accidentPhotos: accidentPhotos.value,
|
|
|
- roadPhotos: roadPhotos.value
|
|
|
- })
|
|
|
+ roadPhotos: roadPhotos.value,
|
|
|
+ });
|
|
|
}
|
|
|
return watch(
|
|
|
() => ({
|
|
@@ -189,17 +200,16 @@ const syncSceneStore = () => {
|
|
|
fixPoints: fixPoints.value,
|
|
|
photos: photos.value,
|
|
|
accidentPhotos: accidentPhotos.value,
|
|
|
- roadPhotos: roadPhotos.value
|
|
|
+ roadPhotos: roadPhotos.value,
|
|
|
}),
|
|
|
(data) => {
|
|
|
- updateSceneStore(data)
|
|
|
+ updateSceneStore(data);
|
|
|
},
|
|
|
{ deep: true }
|
|
|
- )
|
|
|
-}
|
|
|
+ );
|
|
|
+};
|
|
|
|
|
|
-loadStore()
|
|
|
- .catch((e) => {
|
|
|
- console.error(e)
|
|
|
- alert("场景数据加载失败")
|
|
|
- })
|
|
|
+loadStore().catch((e) => {
|
|
|
+ console.error(e);
|
|
|
+ alert("场景数据加载失败");
|
|
|
+});
|