Bladeren bron

feat: save

gemercheung 5 maanden geleden
bovenliggende
commit
31cfd1e817

File diff suppressed because it is too large
+ 16904 - 16026
public/lib/potree/potree.js


File diff suppressed because it is too large
+ 1 - 1
public/lib/potree/potree.js.map


+ 4 - 4
src/api/constant.ts

@@ -108,7 +108,7 @@ export const FLODER_LIST = `${namespace}/caseFiles/allList`
 export const UPLOAD_FILE = `${namespace}/upload/file`
 
 // 素材库分页
-export const MATERIAL_PAG = `/service/manage/dictFile/pageList/media-library`
-export const ADD_MATERIAL = `/service/manage/common/upload/fileNew`
-export const DEL_MATERIAL = `/service/manage/dictFile/del/media-library`
-export const MATERIAL_GROUP_LIST = `/service/manage/dict/getByKey/media-library`
+export const MATERIAL_PAG = `${namespace}/dictFile/pageList/media-library`
+export const ADD_MATERIAL = `${namespace}/upload/fileNew`
+export const DEL_MATERIAL = `${namespace}/dictFile/del/media-library`
+export const MATERIAL_GROUP_LIST = `${namespace}/dict/getByKey/media-library`

+ 12 - 5
src/api/fuse-model.ts

@@ -5,7 +5,7 @@ import {
   FUSE_UPDATE_MODEL,
   FUSE_DELETE_MODEL,
 } from "./constant";
-import { params } from "@/env";
+import { namespace, params } from "@/env";
 
 import { Scene, SceneStatus, SceneType } from "./scene";
 
@@ -39,6 +39,7 @@ interface ServiceFuseModel {
   opacity: number;
   bottom: number;
   fusionNumId: number;
+  modelType: string
   transform: {
     position: SceneLocalPos;
     rotation: SceneLocalPos;
@@ -48,7 +49,7 @@ interface ServiceFuseModel {
 }
 
 export const uploadMaterialToModel = async (uploadId: number) => {
-  const model = await axios.post<{modelId: number}>('/fusion/model/addByMediaLibrary', {caseId: params.caseId, uploadId})
+  const model = await axios.post<{modelId: number}>(`${namespace}/model/addByMediaLibrary`, {caseId: params.caseId, uploadId})
   return model
 }
 
@@ -78,7 +79,7 @@ export const getSceneUrl = (sceneData: Scene) => {
       console.error(url, e);
     }
   }
-  return url
+  return [url.toString()]
 }
 
 const serviceToLocal = (
@@ -92,7 +93,7 @@ const serviceToLocal = (
     opacity: serviceModel.opacity || 1,
     bottom: serviceModel.bottom || 0,
     fusionNumId: serviceModel.fusionNumId,
-    modelType: serviceModel.sceneData?.modelDateType,
+    modelType: serviceModel.sceneData?.modelType,
     position: serviceModel.transform.position,
     rotation: serviceModel.transform.rotation,
     id: serviceModel.fusionNumId.toString(),
@@ -106,7 +107,12 @@ const serviceToLocal = (
     fusionId: serviceModel.fusionId,
     type: serviceModel.sceneData?.type === SceneType.DSFXJ ? SceneType.SWKK : serviceModel.sceneData?.type,
     size: serviceModel.sceneData?.modelSize,
-    raw: serviceModel.sceneData,
+    raw: {
+      ...serviceModel.sceneData,
+      laserOSSRoot: params.root + '/' + serviceModel.sceneData.mapping + '',
+      // panoOSSRoot: params.root + '/' +serviceModel.sceneData.mapping + '',
+      panoOSSRoot: params.root  ,
+    },
     time: serviceModel.sceneData?.createTime,
     status: serviceModel.sceneData
       ? serviceModel.sceneData.status
@@ -121,6 +127,7 @@ const localToService = (
   hide: Number(!model.show),
   opacity: model.opacity,
   fusionNumId: model.fusionNumId,
+  modelType: model.modelType,
   bottom: model.bottom,
   transform: {
     position: model.position,

+ 13 - 13
src/api/instance.ts

@@ -28,19 +28,19 @@ export const {
 } = instance;
 
 const gotoLogin = () => {
-  if (import.meta.env.DEV) {
-    GAxios.post("/service/manage/login", {
-      password: "MRinIEn3ExMjM0NTY=Q5Lm39urQWzN7k4oCG",
-      userName: "super-admin",
-      username: "super-admin",
-    }).then((res) => {
-      setToken(res.data.data.token)
-      setTimeout(() => location.reload())
-    });
-  } else {
-    const loginHref = `/admin/#/statistics/scene`
-    location.href = loginHref + '?redirect=' + escape(location.href)
-  }
+  // if (import.meta.env.DEV) {
+  //   GAxios.post("/service/manage/login", {
+  //     password: "MRinIEn3ExMjM0NTY=Q5Lm39urQWzN7k4oCG",
+  //     userName: "super-admin",
+  //     username: "super-admin",
+  //   }).then((res) => {
+  //     setToken(res.data.data.token)
+  //     setTimeout(() => location.reload())
+  //   });
+  // } else {
+  //   const loginHref = `/admin/#/statistics/scene`
+  //   location.href = loginHref + '?redirect=' + escape(location.href)
+  // }
 };
 
 addReqErrorHandler((err) => {

+ 3 - 0
src/api/scene.ts

@@ -28,7 +28,10 @@ export const SceneTypeDesc: Record<SceneType, string>  = lang.scene.types
 export interface Scene {
   createTime: string
   id: number
+  ossRoot: string
   isLaser: boolean
+  mapping: string
+  modelType: any
   modelDateType: string
   modelGlbUrl: string
   raw: any,

+ 2 - 1
src/api/setting.ts

@@ -3,6 +3,7 @@ import defaultCover from "@/assets/cover.png";
 import { params } from "@/env";
 import axios from "./instance";
 
+
 type ServeSetting = {
   settingsId?: string;
   pose?: string;
@@ -33,7 +34,7 @@ export type Setting = {
 const toLocal = (serviceSetting: ServeSetting): Setting => ({
   id: serviceSetting.settingsId,
   pose: serviceSetting.pose && JSON.parse(serviceSetting.pose),
-  cover: serviceSetting.cover || defaultCover,
+  cover: serviceSetting.cover || (params.static +"/fusion/default/images/cover.png"),
   back: serviceSetting.back || "map",
   mapType: serviceSetting.mapType || 'satellite',
 });

+ 14 - 14
src/api/setup.ts

@@ -132,20 +132,20 @@ export const axiosFactory = () => {
         hook.before && hook.before(config)
       }
 
-      if (!matchURL(axiosConfig.unTokenSet, config)) {
-        if (!axiosConfig.token) {
-          if (!offline && !matchURL(axiosConfig.unReqErrorSet, config)) {
-            const error = new Error(ui18n.t('resCode.4008'))
-            callErrorHandler('req', error, config)
-            throw error
-          }
-        } else {
-          config.headers = {
-            ...config.headers,
-            token: axiosConfig.token
-          }
-        }
-      }
+      // if (!matchURL(axiosConfig.unTokenSet, config)) {
+      //   if (!axiosConfig.token) {
+      //     if (!offline && !matchURL(axiosConfig.unReqErrorSet, config)) {
+      //       const error = new Error(ui18n.t('resCode.4008'))
+      //       callErrorHandler('req', error, config)
+      //       throw error
+      //     }
+      //   } else {
+      //     config.headers = {
+      //       ...config.headers,
+      //       token: axiosConfig.token
+      //     }
+      //   }
+      // }
       return config
     }
   )

+ 1 - 1
src/components/bill-ui/components/input/file.vue

@@ -42,7 +42,7 @@
         </div>
 
         <span v-else v-if="!maxLen || maxLen > modelValue.length">
-          {{ multiple ? t("sys.upload.conAdd") : t("sys.upload.rep") }}
+          {{ multiple ? $t("sys.upload.conAdd") : $t("sys.upload.rep") }}
         </span>
         <span class="tj" v-if="maxLen && modelValue.length">
           <span>{{ modelValue.length || 0 }}</span> / {{ maxLen }}

+ 5 - 5
src/components/static-preview/resource.vue

@@ -7,16 +7,16 @@
       playsinline
       webkit-playsinline
     >
-      <source :src="url" />
+      <source :src="getResources(url)" />
     </video>
-    <iframe v-else-if="type === MetaType.other" :src="url"></iframe>
+    <iframe v-else-if="type === MetaType.other" :src="getResources(url)"></iframe>
     <iframe
       v-else-if="type === MetaType.xfile"
       :src="`./xfile-viewer/index.html?file=${url}&time=${Date.now()}`"
     ></iframe>
-    <img :src="url" v-if="type === MetaType.image" />
+    <img :src="getResources(url)" v-if="type === MetaType.image" />
     <audio
-      :src="url"
+      :src="getResources(url)"
       v-if="type === MetaType.audio"
       controls
       autoplay
@@ -27,7 +27,7 @@
 </template>
 
 <script lang="ts" setup>
-import { getResource } from "@/env";
+import { getResource, getResources } from "@/env";
 import { computed } from "vue";
 import { getUrlType, MetaType } from "@/utils/meta";
 

+ 120 - 47
src/env/index.ts

@@ -1,27 +1,31 @@
-import { stackFactory, flatStacksValue, strToParams } from '@/utils'
-import { reactive, ref } from 'vue'
+import { stackFactory, flatStacksValue, strToParams } from "@/utils";
+import { reactive, ref } from "vue";
 
-import type { FuseModel, Path, TaggingPosition, View } from '@/store'
-export const namespace = '/fusion'
-export const viewModeStack = stackFactory(ref<'full' | 'auto'>('auto'))
-export const showToolbarStack = stackFactory(ref<boolean>(false))
-export const showHeadBarStack = stackFactory(ref<boolean>(true))
-export const showRightPanoStack = stackFactory(ref<boolean>(true))
-export const showLeftPanoStack = stackFactory(ref<boolean>(false))
-export const showLeftCtrlPanoStack = stackFactory(ref<boolean>(true))
+import type { FuseModel, Path, TaggingPosition, View } from "@/store";
+export const viewModeStack = stackFactory(ref<"full" | "auto">("auto"));
+export const showToolbarStack = stackFactory(ref<boolean>(false));
+export const showHeadBarStack = stackFactory(ref<boolean>(true));
+export const showRightPanoStack = stackFactory(ref<boolean>(true));
+export const showLeftPanoStack = stackFactory(ref<boolean>(false));
+export const showLeftCtrlPanoStack = stackFactory(ref<boolean>(true));
 export const showModeStack = stackFactory(ref<"pano" | "fuse">("fuse"));
-export const showRightCtrlPanoStack = stackFactory(ref<boolean>(true))
-export const showBottomBarStack = stackFactory(ref<boolean>(false), true)
-export const bottomBarHeightStack = stackFactory(ref<string>('60px'))
-export const showTaggingsStack = stackFactory(ref<boolean>(true))
-export const showPathsStack = stackFactory(ref<boolean>(true))
-export const showPathStack = stackFactory(ref<Path['id']>())
-export const showMeasuresStack = stackFactory(ref<boolean>(true))
-export const currentModelStack = stackFactory(ref<FuseModel | null>(null))
-export const showModelsMapStack = stackFactory(ref<WeakMap<FuseModel, boolean>>(new Map()), true)
-export const modelsChangeStoreStack = stackFactory(ref<boolean>(false))
-export const showTaggingPositionsStack = stackFactory(ref<WeakSet<TaggingPosition>>(new WeakSet()))
-export const currentViewStack = stackFactory(ref<View>())
+export const showRightCtrlPanoStack = stackFactory(ref<boolean>(true));
+export const showBottomBarStack = stackFactory(ref<boolean>(false), true);
+export const bottomBarHeightStack = stackFactory(ref<string>("60px"));
+export const showTaggingsStack = stackFactory(ref<boolean>(true));
+export const showPathsStack = stackFactory(ref<boolean>(true));
+export const showPathStack = stackFactory(ref<Path["id"]>());
+export const showMeasuresStack = stackFactory(ref<boolean>(true));
+export const currentModelStack = stackFactory(ref<FuseModel | null>(null));
+export const showModelsMapStack = stackFactory(
+  ref<WeakMap<FuseModel, boolean>>(new Map()),
+  true
+);
+export const modelsChangeStoreStack = stackFactory(ref<boolean>(false));
+export const showTaggingPositionsStack = stackFactory(
+  ref<WeakSet<TaggingPosition>>(new WeakSet())
+);
+export const currentViewStack = stackFactory(ref<View>());
 
 export const custom = flatStacksValue({
   viewMode: viewModeStack,
@@ -43,37 +47,106 @@ export const custom = flatStacksValue({
   showHeadBar: showHeadBarStack,
   currentView: currentViewStack,
   showMode: showModeStack,
-})
+});
 
+export const params = reactive(
+  strToParams(location.search)
+) as unknown as Params;
+params.caseId = Number(params.caseId);
+params.share = Boolean(Number(params.share));
+params.single = Boolean(Number(params.single));
 
-export const params = reactive(strToParams(location.search)) as unknown as Params
-params.caseId = Number(params.caseId)
-params.share = Boolean(Number(params.share))
-params.single = Boolean(Number(params.single))
+export type Params = {
+  caseId: number;
+  baseURL?: string;
+  modelId?: string;
+  laserRoot: string;
+  panoOSSRoot: string;
+  ossRoot: string;
+  root: string;
+  laserOSSRoot: string;
+  service: string;
+  fileUrl?: string;
+  sign?: string;
+  ip: string;
+  type?: string;
+  serviceUrl?: string;
+  testMap?: boolean;
+  title?: string;
+  m?: string;
+  share?: boolean;
+  single?: boolean;
+  static: string;
+  token?: string;
 
-export type Params = { 
-  caseId: number,
-  baseURL?: string,
-  modelId?: string,
-  fileUrl?: string
-  sign?: string
-  type?: string
-  testMap?: boolean
-  title?: string
-  m?: string
-  share?: boolean,
-  single?: boolean
-  token?: string
-}
+  servicePort: string;
+  laserServicePort: string;
+};
 
-export const baseURL = params.baseURL ? params.baseURL : ''
+export const baseURL = params.baseURL ? params.baseURL : "";
 
 export const getResource = (uri: string) => {
-  if (~uri.indexOf('base64') || ~uri.indexOf('bolb') || ~uri.indexOf('//')) return uri
+  if (~uri.indexOf("base64") || ~uri.indexOf("bolb") || ~uri.indexOf("//"))
+    return uri;
 
-  if (uri[0] === '/') {
-    return `${baseURL}${uri}`
+  if (uri[0] === "/") {
+    return `${baseURL}${uri}`;
   } else {
-    return `${baseURL}/${uri}`
+    return `${baseURL}/${uri}`;
   }
-}
+};
+// /fusion
+
+if (import.meta.env.DEV) {
+  // params.ip = "http://192.168.0.62";
+  // params.static = "/profile";
+  // params.laserServicePort = "9008";
+  // params.servicePort = "8808";
+} else {
+  params.ip = params.ip || "";
+  params.static = params.static || "";
+  params.laserServicePort = params.laserServicePort || "";
+  params.servicePort = params.servicePort || "";
+}
+
+const ip = params.ip + ":";
+params.root = `${ip}${params.laserServicePort}`;
+params.ossRoot = `${ip}${params.laserServicePort}${params.static}`;
+params.serviceUrl = `${ip}${params.servicePort}/fusion`;
+params.laserRoot = params.root;
+
+// params.laserOSSRoot = 'asd/'
+
+params.serviceUrl = "/fusion";
+export let namespace = params.serviceUrl;
+
+export const getResources = (uri: string) => {
+  uri = uri.replaceAll("\\", "/");
+  uri = uri.replaceAll("\\", "/");
+  uri = uri.replaceAll("\\", "/");
+  uri = uri.replaceAll("\\", "/");
+  uri = uri.replaceAll("\\", "/");
+  uri = uri.replaceAll("\\", "/");
+  if (
+    !params.ossRoot ||
+    ~uri.indexOf("base64") ||
+    ~uri.indexOf("bolb") ||
+    ~uri.indexOf("//")
+  )
+    return uri;
+
+  const root =
+    uri.indexOf(params.static.substring(1)) === 0 ||
+    uri.indexOf(params.static) === 0
+      ? `${ip}${params.laserServicePort}`
+      : params.ossRoot;
+  const baseURL = new URL(root);
+  const url = new URL(uri, root);
+  console.log(root, uri);
+  const basePath =
+    baseURL.pathname[baseURL.pathname.length - 1] === "/"
+      ? baseURL.pathname.substring(0, baseURL.pathname.length - 1)
+      : baseURL.pathname;
+  url.pathname = basePath + url.pathname;
+  return url.href;
+};

File diff suppressed because it is too large
+ 1 - 1
src/lang/zh.ts


+ 6 - 6
src/main.ts

@@ -4,7 +4,7 @@ import "./style.scss";
 import App from "./app.vue";
 import Components from "bill/index";
 import router from "./router";
-import { params } from "@/env";
+import { namespace, params } from "@/env";
 import { addHook, addUnsetTokenURLS, delHook, delUnsetTokenURLS } from "@/api";
 import { currentLayout, RoutesName } from "./router";
 import * as URL from "@/api/constant";
@@ -71,11 +71,11 @@ watchEffect(
         URL.CASE_INFO,
         URL.PATH_LIST,
         URL.AUTH_PWD,
-        '/fusion/caseInquest/info',
-        '/fusion/caseExtractDetail/info',
-        '/fusion/caseInquest/downDocx',
-        '/fusion/caseExtractDetail/downDocx',
-        '/fusion/caseImg/getFfmpegImage'
+        `${namespace}/caseInquest/info`,
+        `${namespace}/caseExtractDetail/info`,
+        `${namespace}/caseInquest/downDocx`,
+        `${namespace}/caseExtractDetail/downDocx`,
+        `${namespace}/caseImg/getFfmpegImage`
       ]
       addUnsetTokenURLS(...untokenURLS);
       onCleanup(() => {

+ 2 - 2
src/model/app.vue

@@ -1,5 +1,5 @@
 <template>
-  <iframe class="external" :src="url" ref="iframeRef" v-if="url"></iframe>
+  <iframe class="external" :src="getResources(url)" ref="iframeRef" v-if="url"></iframe>
   <div class="laser-layer" v-show="!url">
     <div class="scene-canvas" ref="fuseRef">
       <div id="direction"></div>
@@ -10,7 +10,7 @@
 <script lang="ts">
 import { defineComponent, ref, watchEffect, computed, watch, nextTick } from "vue";
 import { SceneType } from "@/store";
-import { params } from "@/env";
+import { getResources, params } from "@/env";
 import { fuseModel, modelProps } from "./index";
 import { modelSDKFactory } from "./platform";
 import { getToken } from "@/api";

+ 5 - 4
src/model/platform.ts

@@ -20,6 +20,7 @@ import { aMapToWgs84 } from "@/utils/coord";
 
 import type { ModelType } from "./";
 import { offlinePrev } from "@/api/offline";
+import { params } from "@/env";
 
 export async function modelSDKFactory(
   type: ModelType,
@@ -37,10 +38,10 @@ export async function modelSDKFactory(
   if (type === fuseModel) {
     if (!fuseInitialed) {
       await initialSDK({
-        // laserRoot: offline ? offlinePrev : import.meta.env.VITE_LASER_HOST,
-        panoOSSRoot: offline ? offlinePrev : import.meta.env.VITE_PANO_OSS,
-        ossRoot: offline ? offlinePrev : import.meta.env.VITE_OSS,
-        laserOSSRoot: offline ? offlinePrev : import.meta.env.VITE_LASER_OSS,
+        laserRoot: offline ? offlinePrev : params.laserRoot,
+        panoOSSRoot: offline ? offlinePrev : params.panoOSSRoot,
+        ossRoot: offline ? offlinePrev : params.ossRoot,
+        laserOSSRoot: offline ? offlinePrev : params.laserOSSRoot,
         layout: dom,
         scenes: scenes.value,
         lonlat: center,

+ 3 - 3
src/sdk/association/fuseMode.ts

@@ -1,6 +1,6 @@
 import { SDK, SceneModel, ModelAttrRange } from "../sdk";
 import { toRaw, watch, reactive, ref } from "vue";
-import { custom, getResource } from "@/env";
+import { custom, getResource, getResources } from "@/env";
 import {
   diffArrayChange,
   shallowWatchArray,
@@ -48,7 +48,6 @@ const setModels = (sdk: SDK, models: FuseModels, oldModels: FuseModels) => {
     if (getSceneModel(item)) {
       continue;
     }
-    console.error('addMode', item.status)
     if (item.status !== SceneStatus.SUCCESS) {
       item.error = true;
       item.loaded = true;
@@ -59,6 +58,7 @@ const setModels = (sdk: SDK, models: FuseModels, oldModels: FuseModels) => {
     let sceneModel: SceneModel;
     try {
       
+    console.error('addMode', item.url, item.url.map(getResources))
       sceneModel = sdk.addModel({
         ...itemRaw,
         ...modelRange,
@@ -71,7 +71,7 @@ const setModels = (sdk: SDK, models: FuseModels, oldModels: FuseModels) => {
           : item.modelType,
         url: [SceneType.SWSS, SceneType.SWYDSS].includes(item.type)
           ? item.url
-          : item.url && item.url.map(getResource),
+          : item.url && item.url.map(getResources),
         fromType: item.type,
       });
     } catch (e) {

+ 20 - 8
src/sdk/cover/index.js

@@ -95,14 +95,16 @@ export const enter = ({ dom, mapDom, isLocal, lonlat, scenes, laserRoot, laserOS
     }
      
     if(laserOSSRoot != void 0){
-        Potree.settings.urls.prefix1 = laserOSSRoot 
+        Potree.settings.urls.setPrefix(1, laserOSSRoot)  //dep .. 
     }
     if(panoOSSRoot != void 0){
-        Potree.settings.urls.prefix3 = panoOSSRoot //tile
-    }
-    if(ossRoot){
-        Potree.settings.urls.panoPrefix = ossRoot //vision.txt
+        Potree.settings.urls.setPrefix(3, panoOSSRoot)  //tile
+        Potree.settings.urls.setPrefix(8, panoOSSRoot)//vision.txt
+        //Potree.settings.urls.panoPrefix = panoOSSRoot //vision.txt
     }
+    /* if(ossRoot){
+        Potree.settings.urls.panoPrefix = Potree.settings.urls.handlePrefix(ossRoot) //vision.txt
+    } */
     
     
     
@@ -1015,9 +1017,19 @@ export const enter = ({ dom, mapDom, isLocal, lonlat, scenes, laserRoot, laserOS
                 spliceFromArr(model, props, false)
             }
 
-            try {
-                props.url = JSON.parse(props.url) //去掉 '\'
-            } catch (e) { }
+            //try {
+               // props.url = JSON.parse(props.url)   //去掉 '\'
+                 
+                /* if(props.modelType != 'pointcloud' ){//当前本地版这么写
+                    let addPrefix = (e)=> Potree.settings.urls.getPrefix(3,props) + '/profile'+ e 
+                    if(props.url instanceof Array){
+                        props.url = props.url.map(e=>addPrefix(e))
+                    }else{
+                        props.url = addPrefix(props.url)
+                    }
+                } */
+                
+            //} catch (e) { }
 
             props.done = done; props.progressFun = progressFun; props.onError = onError
 

+ 2 - 1
src/views/guide/guide/edit-paths.vue

@@ -44,7 +44,7 @@
               @click.stop="deletePath(path)"
               :class="{ disabled: isScenePlayIng }"
             />
-            <img :src="getResource(getFileUrl(path.cover))" />
+            <img :src="getResources(getFileUrl(path.cover))" />
           </div>
           <div class="set-phone-attr" v-if="i !== paths.length - 1">
             <ui-input
@@ -108,6 +108,7 @@ import {
   showRightCtrlPanoStack,
   getResource,
   custom,
+  getResources,
 } from "@/env";
 
 import type { Guide, GuidePaths, GuidePath } from "@/store";

+ 2 - 2
src/views/guide/guide/sign.vue

@@ -2,7 +2,7 @@
   <ui-group-option class="sign-guide">
     <div class="info">
       <div class="guide-cover">
-        <img :src="getResource(getFileUrl(guide.cover))" />
+        <img :src="getResources(getFileUrl(guide.cover))" />
         <ui-icon
           type="preview"
           class="icon"
@@ -38,7 +38,7 @@
 <script setup lang="ts">
 import { Guide, getGuidePaths } from "@/store";
 import { getFileUrl, saveAs } from "@/utils";
-import { getResource } from "@/env";
+import { getResource, getResources } from "@/env";
 import { computed, watchEffect, nextTick, ref } from "vue";
 import { playSceneGuide, isScenePlayIng, pauseSceneGuide } from "@/sdk";
 import { VideoRecorder } from "simaqcore";

+ 3 - 1
src/views/record/shot.vue

@@ -23,7 +23,7 @@
       <div class="video-list" v-if="videoList.length">
         <div class="layout" :style="{ width: `${videoList.length * 130}px` }">
           <div v-for="video in videoList" :key="video.cover" class="cover">
-            <img :src="video.cover" />
+            <img :src="getResources(video.cover)" />
             <ui-icon
               type="preview"
               ctrl
@@ -71,6 +71,7 @@ import {
   bottomBarHeightStack,
   showHeadBarStack,
   showLeftPanoStack,
+  getResources,
 } from "@/env";
 import { appEl } from "@/store";
 import { useViewStack } from "@/hook";
@@ -252,6 +253,7 @@ export default defineComponent({
       complete,
       pause,
       close,
+      getResources,
       start,
       barHeight,
       el: sdk.layout,

+ 3 - 2
src/views/record/sign.vue

@@ -5,7 +5,7 @@
   >
     <div class="content">
       <span class="cover">
-        <img :src="getResource(getFileUrl(record.cover))" alt="" v-if="record.cover" />
+        <img :src="getResources(getFileUrl(record.cover))" alt="" v-if="record.cover" />
         <ui-icon
           type="preview"
           ctrl
@@ -66,7 +66,7 @@ import {
   RecordStatus,
 } from "@/store";
 import { Preview } from "@/components/static-preview/index.vue";
-import { getResource } from "@/env";
+import { getResource, getResources } from "@/env";
 import Shot from "./shot.vue";
 import type { RecordProcess } from "./help";
 import { Message } from "bill/index";
@@ -159,6 +159,7 @@ export default defineComponent({
       inputRef,
       RecordStatus,
       MetaType,
+      getResources,
       isPlayVideo,
       getResource,
       getFileUrl,

+ 2 - 1
src/views/security/link.vue

@@ -1,5 +1,5 @@
 <template>
-  <img :src="getLinkAttr(name, type)" v-if="getLinkAttr(name, type)" @click="cflyLink" />
+  <img :src="getResources(getLinkAttr(name, type)!)" v-if="getLinkAttr(name, type)" @click="cflyLink" />
 
   <Preview
     :items="items"
@@ -14,6 +14,7 @@
 import { ref } from "vue";
 import { getLinkAttr } from "./store";
 import { Preview, MediaItem } from "@/components/static-preview/index.vue";
+import { getResources } from "@/env";
 
 const props = defineProps<{
   name: string;

+ 12 - 12
src/views/setting/index.vue

@@ -3,7 +3,7 @@
     <ui-group :title="$t('setting.initView')" borderBottom>
       <ui-group-option>
         <div class="init-pic" :class="{ disabled: isEdit }">
-          <img :src="getFileUrl(setting!.cover)" class="init-puc-cover" />
+          <img :src="getResources(getFileUrl(setting!.cover))" class="init-puc-cover" />
           <div class="init-pic-set" @click="enterSetPic">{{$t('setting.name')}}</div>
         </div>
       </ui-group-option>
@@ -19,7 +19,7 @@
             :class="{ [back.type]: true, active: setting!.back === back.value }"
             @click="setting!.back !== back.value && changeBack(back.value)"
           >
-            <img :src="back.image" v-if="['img', 'map'].includes(back.type)" />
+            <img :src="getResources(back.image)" v-if="['img', 'map'].includes(back.type)" />
             <i class="iconfont" :class="back.image" v-else-if="back.type === 'icon'" />
             <span :style="{ background: back.image }" v-else></span>
             <p class="back-item-desc">{{ back.label }}</p>
@@ -35,7 +35,7 @@ import { RightFillPano } from "@/layout";
 import { enterEdit, enterOld, setting, isEdit, updataSetting } from "@/store";
 import { ref, watchEffect } from "vue";
 import { togetherCallback, getFileUrl, loadPack } from "@/utils";
-import { showRightPanoStack, showRightCtrlPanoStack, custom } from "@/env";
+import { showRightPanoStack, showRightCtrlPanoStack, custom, params, getResources } from "@/env";
 import { analysisPose, sdk, SettingResourceType } from "@/sdk";
 import { ui18n } from "@/lang";
 
@@ -46,26 +46,26 @@ watchEffect(async () => {
     {
       label: ui18n.t('setting.backs.1'),
       type: "map",
-      image: "/oss/fusion/default/images/map.png",
+      image: params.static + "/fusion/default/images/map.png",
       value: "map",
     },
     {
       label: ui18n.t('setting.backs.2'),
       type: "img",
-      image: "/oss/fusion/default/images/pic_ltby@2x.png",
-      value: "/oss/fusion/default/images/蓝天白云.jpg",
+      image: params.static + "/fusion/default/images/pic_ltby@2x.png",
+      value: params.static + "/fusion/default/images/蓝天白云.jpg",
     },
     {
       label: ui18n.t('setting.backs.3'),
       type: "img",
-      image: "/oss/fusion/default/images/pic_wymb@2x.png",
-      value: "/oss/fusion/default/images/乌云密布.jpg",
+      image: params.static + "/fusion/default/images/pic_wymb@2x.png",
+      value: params.static + "/fusion/default/images/乌云密布.jpg",
     },
     {
       label: ui18n.t('setting.backs.4'),
       type: "img",
-      image: "/oss/fusion/default/images/pic_yk@2x.png",
-      value: "/oss/fusion/default/images/夜空.jpg",
+      image: params.static + "/fusion/default/images/pic_yk@2x.png",
+      value: params.static + "/fusion/default/images/夜空.jpg",
     },
     // {
     //   label: "草地",
@@ -82,8 +82,8 @@ watchEffect(async () => {
     {
       label: ui18n.t('setting.backs.5'),
       type: "img",
-      image: "/oss/fusion/default/images/pic_bw@2x.png",
-      value: "/oss/fusion/default/images/傍晚.jpg",
+      image: params.static + "/fusion/default/images/pic_bw@2x.png",
+      value: params.static + "/fusion/default/images/傍晚.jpg",
     },
     // { label: "灰色", type: "color", image: "#333333", value: "#333" },
     // { label: "黑色", type: "color", image: "#000000", value: "#000" },

+ 2 - 2
src/views/tagging/sign.vue

@@ -5,7 +5,7 @@
     @click="edit && getTaggingIsShow(tagging) && emit('select', true)"
   >
     <div class="info">
-      <img :src="getResource(getFileUrl(findImage))" v-if="findImage" />
+      <img :src="getResources(getFileUrl(findImage))" v-if="findImage" />
       <div>
         <p>{{ tagging.title }}</p>
         <span>{{$t('tagging.pos')}}:{{ positions.length }}</span>
@@ -34,7 +34,7 @@
 <script setup lang="ts">
 import { getFileUrl, getUrlType, MetaType } from "@/utils";
 import { computed, ref, watchEffect, nextTick } from "vue";
-import { getResource, showTaggingPositionsStack } from "@/env";
+import { getResource, getResources, showTaggingPositionsStack } from "@/env";
 import { getTaggingPosNode, sdk } from "@/sdk";
 import {
   getTaggingStyle,

+ 2 - 1
src/views/tagging/styles.vue

@@ -23,7 +23,7 @@
       @click="clickHandler(hotStyle)"
     >
       <span>
-        <img :src="getFileUrl(hotStyle.icon)" />
+        <img :src="getResources(getFileUrl(hotStyle.icon))" />
         <ui-icon
           v-if="!hotStyle.default"
           class="delete"
@@ -61,6 +61,7 @@ import { createTaggingStyle } from "@/store";
 import { ref, computed, defineEmits } from "vue";
 import { Cropper } from "bill/index";
 import { getFileUrl } from "@/utils";
+import { getResources } from "@/env";
 
 const props = defineProps<{
   styles: TaggingStyles;

+ 2 - 2
src/views/view/sign.vue

@@ -2,7 +2,7 @@
   <ui-group-option class="sign" :class="{active}">
     <div class="content">
       <span class="cover" @click="fly">
-        <img :src="getResource(getFileUrl(view.cover))" alt="">
+        <img :src="getResources(getFileUrl(view.cover))" alt="">
       </span>
       <ui-input 
         class="view-title-input"
@@ -33,7 +33,7 @@
 <script lang="ts" setup>
 import { ref, computed, watchEffect } from 'vue'
 import { useFocus } from 'bill/hook/useFocus'
-import { custom, getResource } from '@/env'
+import { custom, getResource, getResources } from '@/env'
 import { deepIsRevise, getFileUrl } from '@/utils'
 import { loadModel, getModelDesc, ModelType, currentModel } from '@/model'
 import { viewToModelType } from '@/store'

+ 1 - 1
vite.config.ts

@@ -7,7 +7,7 @@ import { createServer as createLangServer } from "./scripts/lang";
 import { resolve } from "path";
 
 const langProt = 7072;
-const ip = `http://192.168.0.25`;
+const ip = `http://192.168.0.62:8808`;
 const proxy = {
   "/dev": {
     target: `http://localhost:${langProt}`,