bill 7 months ago
parent
commit
5e5b577a89
3 changed files with 25 additions and 5 deletions
  1. 18 3
      src/api/offline.ts
  2. 2 2
      src/sdk/cover/index.js
  3. 5 0
      vite.config.ts

+ 18 - 3
src/api/offline.ts

@@ -4,16 +4,31 @@ import { AxiosInstance } from "axios";
 import {namespace} from '@/env'
 import Axios from 'axios'
 
-export const offlinePrev = import.meta.env.DEV ? '__offline/' : './'
+export const offlinePrev = import.meta.env.DEV ? 'offlineData' : './'
 export const setOfflineAxios = (axios: AxiosInstance) => {
   const data: {[key in string]: any} = {}
   Axios.get(`./${offlinePrev}package/data.json`, {headers: { Accept: "application/json"}}).then(res => {
     Object.assign(data, res.data)
-    const prev = offlinePrev.substring(0, offlinePrev.length - 1)
+    const prev = import.meta.env.DEV ? offlinePrev : offlinePrev.substring(0, offlinePrev.length - 1)
     for (const key in data) {
       data[prev + key] = data[key]
     }
-    ;(window as any).offlineData = data
+    ;(window as any).__data = data
+    ;(window as any).offlineData = new Proxy({}, {
+      get(t, key) {
+        if (key in data) {
+          return data[key as any]
+        } else {
+          console.error(key)
+          return Axios.get(key as any, {headers: { Accept: "application/json"}})
+            .then((res) => {
+              data[key as any] = res.data
+              return res.data
+            })
+        }
+      }
+    })
+    
   })
 
   // 流接口

+ 2 - 2
src/sdk/cover/index.js

@@ -71,8 +71,8 @@ export const enter = ({ dom, mapDom, isLocal, lonlat, scenes, laserRoot, laserOS
     if(window.offline){//离线版 
         Potree.fileStorage = { 
             get(url){
-                return new Promise(function(resolve,reject){
-                    let data = window.offlineData[url]
+                return new Promise(async function(resolve,reject){
+                    let data = await window.offlineData[url]
                     if(data){
                         resolve(data) 
                     }else{

+ 5 - 0
vite.config.ts

@@ -7,6 +7,11 @@ import { resolve } from 'path'
 
 const ip = `http://192.168.0.25`
 const proxy = {
+  '/offlineData': {
+    target: 'http://192.168.0.43:9000/',
+    changeOrigin: true,
+    rewrite: path => path.replace(/^\/offlineData/, '')
+  },
   '/fusion/ws': {
     target: 'wss://test-mix3d.4dkankan.com/',
     ws: true,