123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130 |
- 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 {debounce, getId} from '@/utils'
- import {watch} from "vue";
- import {params} from "@/hook";
- import router from "@/router";
- const global = window as any
- 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
- },
- async downloadImage(file) {
- window.open(URL.createObjectURL(file))
- },
- closePage() {
- }
- }
- : {
- setStore(data) {
- return new Promise(resolve => {
- global.android.setSceneStore(params.m, data)
- global.setSceneStoreCallback = resolve
- })
- },
- getStore() {
- return new Promise(resolve => {
- global.getSceneStoreCallback = resolve
- global.android.getSceneStore(params.m)
- })
- },
- uploadImage(file) {
- return new Promise(resolve => {
- global.uploadImageCallback = resolve
- global.android.uploadImage(params.m, file)
- })
- },
- downloadImage(file) {
- return new Promise(resolve => {
- global.downloadImageCallback = resolve
- global.android.downloadImage(params.m, file)
- })
- },
- closePage() {
- return new Promise(resolve => {
- global.closeWebViewCallback = resolve
- global.android.closeWebView()
- })
- }
- }
- export const back = () => {
- if (history.state.back) {
- router.back()
- } else {
- 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 || []
- syncSceneStore()
- }
- export const updateSceneStore = debounce(api.setStore, 1000)
- export const uploadImage = (blob: Blob) => {
- 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)
- }
- const syncSceneStore = () => {
- return watch(
- () => ({
- measures: list.value,
- baseLines: baseLines.value,
- basePoints: basePoints.value,
- fixPoints: fixPoints.value,
- photos: photos.value,
- accidentPhotos: accidentPhotos.value,
- roadPhotos: roadPhotos.value
- }),
- (data) => {
- updateSceneStore(data)
- },
- { deep: true }
- )
- }
- loadStore()
- .catch((e) => {
- console.error(e)
- alert("场景数据加载失败")
- })
|