import { stackFactory, flatStacksValue, strToParams } from "@/utils"; import { reactive, ref } from "vue"; import type { FuseModel, Path, TaggingPosition, View } from "@/store"; import { lang, langKey } from "@/lang"; export const viewModeStack = stackFactory(ref<"full" | "auto">("auto")); export const showToolbarStack = stackFactory(ref(false)); export const showHeadBarStack = stackFactory(ref(true)); export const showRightPanoStack = stackFactory(ref(true)); export const showLeftPanoStack = stackFactory(ref(false)); export const showLeftCtrlPanoStack = stackFactory(ref(true)); export const showModeStack = stackFactory(ref<"pano" | "fuse">("fuse")); export const showRightCtrlPanoStack = stackFactory(ref(true)); export const showBottomBarStack = stackFactory(ref(false), true); export const bottomBarHeightStack = stackFactory(ref("60px")); export const showTaggingsStack = stackFactory(ref(true)); export const showPathsStack = stackFactory(ref(true)); export const showPathStack = stackFactory(ref()); export const showMeasuresStack = stackFactory(ref(true)); export const currentModelStack = stackFactory(ref(null)); export const showModelsMapStack = stackFactory( ref>(new Map()), true ); export const modelsChangeStoreStack = stackFactory(ref(false)); export const showTaggingPositionsStack = stackFactory( ref>(new WeakSet()) ); export const currentViewStack = stackFactory(ref()); export const custom = flatStacksValue({ viewMode: viewModeStack, showToolbar: showToolbarStack, showRightPano: showRightPanoStack, showLeftPano: showLeftPanoStack, showLeftCtrlPano: showLeftCtrlPanoStack, shwoRightCtrlPano: showRightCtrlPanoStack, showTaggings: showTaggingsStack, showPaths: showPathsStack, showPath: showPathStack, showMeasures: showMeasuresStack, currentModel: currentModelStack, showModelsMap: showModelsMapStack, modelsChangeStore: modelsChangeStoreStack, showTaggingPositions: showTaggingPositionsStack, showBottomBar: showBottomBarStack, bottomBarHeight: bottomBarHeightStack, 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 type Params = { caseId: number; baseURL?: string; modelId?: string; laserRoot: string; swssUrl: string; swkkUrl: 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; servicePort: string; swkkPort: string; laserServicePort: string; }; 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[0] === "/") { return `${baseURL}${uri}`; } else { return `${baseURL}/${uri}`; } }; // /fusion if (offline) { params.static = '' if (import.meta.env.DEV) { params.serviceUrl = `/offlineResource/fusion`; params.root = '/offlineResource' // params.root = `http://192.168.0.62:9000`; params.ossRoot = `http://192.168.0.62:9000`; params.root = `/offlineResource`; } else { params.serviceUrl = "/fusion"; } } else { // jar服务链接 params.ip = params.ip || ""; // 融合的mapping params.static = params.static || ""; // 激光服务端口 params.laserServicePort = params.laserServicePort || ""; // 融合服务端口 params.servicePort = params.servicePort || ""; // 四维看看查看路径 的spc.html params.swssUrl = params.swssUrl || ""; // 四维深时的路径 index.html params.swkkUrl = params.swkkUrl || ""; // 四维看看的服务端口 params.swkkPort = params.swkkPort || "8088"; const ip = params.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.swssUrl = `${params.swssUrl}?lang=${langKey}&serve_link=${params.laserRoot}&basePath=${params.laserRoot}`; params.swkkUrl = `${params.swkkUrl}?lang=${langKey}&app_server=${ip}${params.swkkPort}`; } // 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 ip = params.ip ? `${params.ip}:${params.static}` : '' if (!ip || !params.laserServicePort || !params.ossRoot) 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; };